home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1994 November / macformat-018.iso / Utility Spectacular / Developer / SAT / SAT C Lib / SAT.h next >
Encoding:
Text File  |  1994-07-26  |  6.9 KB  |  202 lines  |  [TEXT/KAHL]

  1. /* #include file for the C interface to SAT */
  2.  
  3. /* Comment out under TC5: */
  4. /*#include <Color.h>*/
  5. /*#include <WindowMgr.h>*/
  6. /*#include <DialogMgr.h>*/
  7.  
  8. // Will it work with C++ if I do like this?
  9. #ifdef _cplusplus
  10. extern "C" {
  11. #endif
  12.  
  13. #ifndef true
  14. #define true 1
  15. #endif
  16.  
  17. #ifndef false
  18. #define false 0
  19. #endif
  20.  
  21. #ifndef nil
  22. #define nil 0L
  23. #endif
  24.  
  25.     typedef struct Face {
  26.         char            *colorData;
  27.         short            resNum;
  28.         BitMap        iconMask;
  29.         short            rowBytes; /* Note! No flags in the highest bits!*/
  30.         struct face    *next;
  31.         RgnHandle        maskRgn;
  32.         } Face, *FacePtr;
  33.  
  34.     typedef struct Sprite {
  35. /* Variables that you should change as appropriate */
  36.         short            kind;
  37.         Point            position;    
  38.         Rect            hotRect, hotRect2;
  39.         FacePtr            face;
  40.         pascal void        (*task) (struct Sprite *);
  41.         pascal void        (*hitTask) (struct Sprite *, struct Sprite *);
  42.         pascal void        (*destructTask) (struct Sprite *);
  43. /* SAT variables that you shouldn't change: */
  44.         Point            oldpos;
  45.         struct Sprite    *next, *prev;
  46.         Rect            r, oldr;
  47. /* Variables for free use by the application: */
  48.         short        layer;
  49.         Point            speed;
  50.         short        mode;
  51.         Ptr            appPtr;
  52.         long            appLong;
  53.         } Sprite, *SpritePtr;
  54.  
  55. typedef struct{
  56.         short    patternType;     /* 1 = Pattern, PatHandle, 2 = PixPat, PixPatHandle */
  57.         PixPatHandle    thePat;         /* or PatHandle */
  58.         }    SATPattern, *SATPatPtr, **SATPatHandle;
  59.  
  60. #define    UpdatePtr    Ptr
  61.  
  62. typedef struct {
  63.         WindowPtr    wind;
  64.         short        offSizeH, offSizeV;
  65.         GrafPtr        offScreen, backScreen;
  66.         GDHandle        offScreenGD, backScreenGD;
  67.         long            ox, oy;
  68.         short        pict, bwpict;
  69.         Boolean        fitThePICTs;
  70.         short        sorting, collision, searchWidth;
  71.         GDHandle        device;
  72.         PixMapHandle    screen;
  73.         Rect            bounds;
  74.         short        initDepth;
  75.         pascal Boolean    (*synchHook) ();
  76.         SpritePtr        sRoot;
  77.         UpdatePtr        updateRoot;
  78.         Boolean        anyMonsters;
  79.  
  80.         CGrafPtr        ditherOff;
  81.         GDHandle        ditherOffGD;
  82.         CGrafPtr        iconPort;
  83.         GDHandle        iconPortGD;
  84.         CGrafPtr        iconPort2;
  85.         GDHandle        iconPort2GD;
  86.         GrafPtr        bwIconPort;
  87.         } SATglobalsRec;
  88.  
  89. /* Constants for ConfigureSAT */
  90.     enum{kVPositionSort=0, kLayerSort, kNoSort};
  91.     enum{kKindCollision=0, kForwardCollision, kBackwardCollision, kNoCollision, kForwardOneCollision};
  92.  
  93. /* Global variables */
  94.     extern SATglobalsRec    gSAT;    /* Most globals */
  95.     extern FacePtr            faceRoot;    /* Face list */
  96.     extern Boolean            colorFlag; /* Is this Mac color capable? */
  97.     extern pascal void        (*gSoundErrorProc)(OSErr); /* Sound errors reported here */
  98.  
  99. /* SAT routines */
  100.  
  101.     typedef pascal void (*TaskPtr)(SpritePtr);
  102.     typedef pascal Boolean (*SynchPtr)();
  103.     typedef pascal void (*EmergencyPtr)();
  104.  
  105. /* Initialization */
  106.     pascal void ConfigureSAT(Boolean, short, short, short);
  107.     pascal void InitSAT (short, short, short, short);
  108.     pascal void CustomInitSAT (short, short, Rect *, WindowPtr, GDHandle, Boolean, Boolean, Boolean, Boolean, Boolean);
  109. /* Maintainance, background manipulation etc. */
  110.     pascal Boolean SATDepthChangeTest();
  111.     pascal void SATDrawPICTs (short, short);
  112.     pascal void PeekOffscreen();
  113. /* Drawing */
  114.     pascal void SATPlotFace(FacePtr, GrafPtr, GDHandle, Point, Boolean); /*Draw a Face (icon).*/
  115.     pascal void SATPlotFaceToScreen(FacePtr, Point, Boolean);
  116.     pascal void SATCopyBits(GrafPtr, GrafPtr, GDHandle, Rect*, Rect*, Boolean);
  117.     pascal void SATCopyBitsToScreen(GrafPtr, Rect, Rect, Boolean);
  118.     pascal void SATBackChanged (Rect *); /*Tell SAT about changes in BackScreen*/
  119. /* SetPort replacements */
  120.     pascal void SATGetPort (GrafPtr*,  GDHandle*);
  121.     pascal void SATSetPort (GrafPtr, GDHandle);
  122.     pascal void SATSetPortOffScreen(); /*Use before Quick-Drawing on offScreen*/
  123.     pascal void SATSetPortBackScreen(); /*Use before Quick-Drawing on BackScreen*/
  124.     pascal void SATSetPortScreen(); /*Use to restore after drawing off/backscreen*/
  125. /* Sprite handling */
  126.     pascal FacePtr GetFace (short);
  127.     pascal void DisposeFace (FacePtr);
  128.     pascal SpritePtr NewSprite (short,short,short, TaskPtr); // (*void)(SpritePtr));
  129.     pascal SpritePtr NewSpriteAfter (SpritePtr,short,short,short, TaskPtr);
  130.     pascal void KillSprite (SpritePtr);
  131. /* Animating */
  132.     pascal void RunSAT (Boolean);
  133. /* Advanced special-purpose calls */
  134.     pascal void SATInstallSynch (SynchPtr);
  135.     pascal void SATInstallEmergency (EmergencyPtr);
  136.     pascal void SATSetSpriteRecSize (long);
  137.     pascal void SkipSAT();
  138.     pascal void KillSAT(); /*Dispose of offscreen buffers to allow re-init*/
  139. /* Offscreen - use only if you need an *extra* offscreen buffer. These calls are likely to change in the future!*/
  140.     pascal void SATMakeOffscreen (GrafPtr*, Rect*, GDHandle*); /*Make offscreen buffer in current screen depth and CLUT.*/
  141.     pascal void SATDisposeOffScreen (GrafPtr*, GDHandle); /*Get rid of offscreen*/
  142.     pascal OSErr CreateOffScreen (Rect*, short, CTabHandle, CGrafPtr*, GDHandle*); /*From Principia Offscreen*/
  143.     pascal void DisposeOffScreen (CGrafPtr, GDHandle);/*From Principia Offscreen*/
  144. /* New procedures */
  145.     pascal void SetPortMask (FacePtr);
  146.     pascal void SetPortFace (FacePtr);
  147.     pascal void SetPortFace2 (FacePtr);
  148.     pascal FacePtr NewFace (Rect*);
  149.     pascal void ChangedFace (FacePtr);
  150.     pascal void SATSetStrings (Str255, Str255, Str255, Str255, Str255, Str255, Str255, Str255);
  151.     pascal Boolean TrapAvailable (short);
  152.     pascal CIconHandle SATGetCicn (short);
  153.     pascal void SATPlotCicn (CIconHandle, GrafPtr, GDHandle, Rect*);
  154.     pascal void SATDisposeCicn (CIconHandle);
  155.  
  156. /*Utilities*/
  157.     pascal void DrawInt (short);
  158.     pascal void DrawLong (long);
  159.     pascal short Rand (short);
  160.     pascal short Rand10();
  161.     pascal short Rand100();
  162.     pascal void ReportStr (Str255);
  163.     pascal Boolean QuestionStr(Str255);
  164.     pascal void CheckNoMem (Ptr); /*If the Ptr is nil, out of memory emergency exit*/
  165.     pascal short SATFakeAlert (Str255, Str255, Str255, Str255, short, short, short, Str255, Str255, Str255);
  166.     pascal void SetMouse (Point);
  167. /* Pattern utilities */
  168.     pascal void SATPenPat (SATPatHandle);
  169.     pascal void SATBackPat (SATPatHandle);
  170.     pascal SATPatHandle SATGetPat (short);
  171.     pascal void SATDisposePat (SATPatHandle);
  172. /* Menu bar utilities */
  173.     pascal void ShowMBar();
  174.     pascal void HideMBar(WindowPtr);
  175. /*Sound*/
  176.     pascal void InitSATSound();            /* No longer necessary */
  177.     pascal void SATSoundPlay (Handle, short, Boolean);    /* Play sounds with priority handling */
  178.     pascal void SATSoundShutup();        /*Silence, dispose of sound channel*/
  179.     pascal void SATSoundEvents();        /* Call this once in a while when not calling RunSAT often */
  180.     pascal Boolean SATSoundDone();    /* Any sound going on?*/
  181.     pascal Handle SATGetSound (short);
  182.     pascal Handle SATGetNamedSound (Str255);
  183.     pascal void SATDisposeSound (Handle);
  184.     pascal void SATSoundOn();
  185.     pascal void SATSoundOff();
  186. /* Multi-channel sound routines */
  187.     pascal short SATSoundInitChannels (short);
  188.     pascal Boolean SATSoundDoneChannel (short);
  189.     pascal void SATSoundPlayChannel (Handle, short);
  190.     pascal void SATSoundReserveChannel (short, Boolean);
  191.     pascal void SATSoundShutupChannel (short);
  192.     pascal void SATPreloadChannels();
  193. /*Experimental, likely to be renamed/removed/changed:*/
  194.     pascal void SATSoundPlay2 (Handle, short, Boolean,Boolean);
  195.     pascal void SATSoundPlayEasy (Handle, Boolean);
  196.  
  197. // Will it work with C++ if I do like this?
  198. #ifdef _cplusplus
  199. }
  200. #endif
  201.  
  202.